# Makefile
# David Rowe
# 22/4/01
#
# Makefile for VPB driver library

CXX = g++

ifeq ($(OS),linux)
CPPFLAGS = -g -D_DEBUG -DLINUX -Wall $(GPROF)
else
CPPFLAGS = -g -D_DEBUG -Wall $(GPROF)
endif


 
OBJ =	adpcm.o		\
	alaw.o		\
	apifunc.o	\
	call.o		\
	cid.o		\
	cidg.o		\
	coff.o 		\
	comm.o 		\
	comp.o		\
	config.o	\
	digbuf.o	\
	digits.o	\
	dspfifo.o	\
	dummyfirmware.o	\
	envtone.o	\
	fifo.o		\
	hip.o 		\
	mapdev.o	\
	mess.o		\
	mulaw.o		\
	objtrack.o	\
	osc.o		\
	pci.o		\
	pip.o		\
	playrec.o	\
	portlinux.o	\
	portuser.o	\
	ioports.o	\
	timer.o 	\
	toneg.o		\
	transevt.o	\
        v4logagc.o      \
	verbose.o	\
	vpbagc.o	\
	vpbapi.o	\
	vpbdial.o	\
	vpbhandle.o	\
	vpbreg.o 	\
	vpbtimer.o	\
	vpbtoned.o	\
	vpbvox.o	\
	wave.o		\
	wobbly.o	\
	translate.o

OBJHD =	hdaport.o	\
	hostdsp.o	

# detect up 'OSTYPE=linux' env variable from top level make file if Linux
os=linux

ifeq ($(OS),linux)
	GENOBJ = $(OBJHD) genericlinux.o
else
	GENOBJ = genericfreebsd.o
endif

%.o: %.cpp
	$(CXX) $(CPPFLAGS) $< -o $@ -c

ifeq ($(OS),linux)
all:	libvpb.a vpb.o vpbhp.o
else
all:	libvpb.a
endif

clean:
	rm -f *.o *.a core*

# OpenSwitch12 host processing firmware not supported by FreeBSD (just yet)

ifeq ($(OS),linux)
libvpb.a: $(OBJ) $(GENOBJ)
	ar r libvpb.a $(OBJ) $(GENOBJ) ../firmware/firmware 
else
libvpb.a: $(OBJ) $(GENOBJ)
	ar r libvpb.a $(OBJ) $(GENOBJ) dummyfirmware.o
endif

ifeq ($(OS),linux)
# We can compile Linux kernel mode driver here, but FreeBSD kernel mode
# component must be compiled into the kernel.

# OpenLine4/OpenLog4 kernel mode driver

vpb.o: vpb.c
	cc -O6 -m486 -c vpb.c -I/usr/src/linux/include -Wall

# OpenSwitch12 kernel mode driver

vpbhp.o: fifoc.o hda.o khook.o kring.o kldrop.o 
	ld -r hda.o fifoc.o khook.o kring.o kldrop.o  -o vpbhp.o

fifoc.o: fifoc.c
	cc -c fifoc.c -Wall

khook.o: khook.c
	cc -c khook.c -Wall

kring.o: kring.c
	cc -c kring.c -Wall

kldrop.o: kldrop.c
	cc -c kldrop.c -Wall -I/usr/src/linux/include

hda.o: hda.c 
	cc hda.c -c -m486 -O6 -Wall -I/usr/src/linux/include

endif







